package com.kevin.designpattern.memento.white_box;

/**
 * 发起人角色
 */
public class GameRole {

    private int vit; // 生命力
    private int atk; // 攻击力
    private int def; // 防御力

    public int getVit() {
        return vit;
    }

    public void setVit(int vit) {
        this.vit = vit;
    }

    public int getAtk() {
        return atk;
    }

    public void setAtk(int atk) {
        this.atk = atk;
    }

    public int getDef() {
        return def;
    }

    public void setDef(int def) {
        this.def = def;
    }

    /**
     * 初始化内部状态的方法
     */
    public void initState() {
        this.vit = 100;
        this.atk = 100;
        this.def = 100;
    }

    /**
     * 战斗的方法
     */
    public void fight() {
        this.vit = 0;
        this.atk = 0;
        this.def = 0;
    }

    /**
     * 保存角色状态功能
     *
     * @return
     */
    public RolesStateMemento saveState() {
        RolesStateMemento rolesStateMemento = new RolesStateMemento(vit, atk, def);
        return rolesStateMemento;
    }

    /**
     * @param rolesStateMemento
     */
    public void recoverState(RolesStateMemento rolesStateMemento) {

        //将备忘录中存储的状态赋值给当前的成员
        this.vit = rolesStateMemento.getVit();
        this.atk = rolesStateMemento.getAtk();
        this.def = rolesStateMemento.getDef();
    }

    // 展示当前状态
    public void stateDisplay() {
        System.out.println("角色生命力：" + vit);
        System.out.println("角色攻击力：" + atk);
        System.out.println("角色防御力：" + def);
    }
}
